Auto-activation of fonts

ABSTRACT

A method and an apparatus that search for font data associated with an electronic document in a system in response to a font request are described. A font search is automatically activated when a requested font is determined not yet registered in a system. As a result of the font search, a requested font may be registered into a system. If a font search cannot locate a requested font in local storages and remote systems, a replacement for the requested font is selected from registered fonts. A replacement font may be one of the registered fonts most similar to the requested font according to a similarity measurement based on font attributes.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to, and claims the benefits of, U.S.Provisional Patent Application No. 60/943,046, filed on Jun. 9, 2007entitled “AUTOMATIC FONT ACTIVATION,” Julio Gonzalez et al. which ishereby incorporated herein by reference.

FIELD OF INVENTION

The present invention relates generally to font management. Moreparticularly, this invention relates to automatic font activation.

BACKGROUND

As the number of available fonts rapidly increases, it has become harderand harder to properly manage fonts for electronic documents. Typically,an electronic document is assigned with fixed fonts in a softwareapplication. Later, in the process of editing and/or printing, thesefonts are requested from an operating environment and applied to theelectronic document. However, a particular font may not be availablewhen requested. Usually, a user is required to perform a time consumingyet error prone task to locate and install the requested font.

Alternatively, a user may rely on font management software to helpinstall proper fonts. Often times, a user is still required to inputdetailed specifications about requested fonts for such software to workproperly. However, the vast majority of users may not be knowledgeableabout font specifications such as where a font library is located, whatownership of the font library is associated with, and/or where a fontshould be installed etc.

In one embodiment, an electronic document, such as a word processingfile which may have been just downloaded or otherwise received by asystem, may have font information associated with the document, and asearch for fonts required by the document, as indicated by the fontinformation, may occur automatically in response to, for example,receiving the document or opening the document. The system performs thesearch by searching on local and/or remote storage devices for thedesired font resources, such as those specified by the font information.After finding those resources, the system automatically (e.g. withoutuser interaction) loads and/or activates those font resources.

Therefore, current font management mechanisms do not provide a propersolution for handling a large number of fonts.

SUMMARY OF THE DESCRIPTION

An embodiment of the present invention includes a method and apparatusthat search for font data associated with an electronic document inresponse to a font request. A font search is automatically activatedwhen a requested font is not yet registered in a system. As a result ofthe font search, a requested font may be installed into a system. If afont search cannot locate a requested font in local storages and remotesystems, a replacement for the requested font is selected fromregistered fonts. A replacement font may be one of the registered fontsmost similar to the requested font according to a similarity measurementbased on font attributes.

Other features of the present invention will be apparent from theaccompanying drawings and from the detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating one embodiment of a system toautomatically search and/or activate fonts;

FIG. 2 is a flow diagram illustrating one embodiment of a process toautomatically search and/or activate fonts;

FIG. 3 is a flow diagram illustrating one embodiment of a process tosearch for a font;

FIG. 4 is a flow diagram illustrating one embodiment of a process todetermine a replacement for a font;

FIG. 5 illustrates one example of a typical computer system which may beused in conjunction with the embodiments described herein

DETAILED DESCRIPTIONS

A method and an apparatus for automatic font activation are describedherein. In the following description, numerous specific details are setforth to provide thorough explanation of embodiments of the presentinvention. It will be apparent, however, to one skilled in the art, thatembodiments of the present invention may be practiced without thesespecific details. In other instances, well-known components, structures,and techniques have not been shown in detail in order not to obscure theunderstanding of this description

Reference in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment can be included in at least oneembodiment of the invention. The appearances of the phrase “in oneembodiment” in various places in the specification do not necessarilyall refer to the same embodiment.

The processes depicted in the figures that follow, are performed byprocessing logic that comprises hardware (e.g., circuitry, dedicatedlogic, etc.), software (such as is run on a general-purpose computersystem or a dedicated machine), or a combination of both. Although theprocesses are described below in terms of some sequential operations, itshould be appreciated that some of the operations described may beperformed in different order. Moreover, some operations may be performedin parallel rather than sequentially.

The term “host” and the term “device” are intended to refer generally todata processing systems rather than specifically to a particular formfactor for the host versus a form factor for the device.

In one embodiment, auto activation of fonts may install requested fontson demand without user intervention. A requested font associated with anelectronic document may be located automatically from local files orremote systems. Multiple systems may interact with each other over anetwork to locate a requested font. In one embodiment, a requested fontmay be activated in the background unnoticed to a user. Activating afont may include reallocating storage space associated with apredetermined location within system storage constraints. In oneembodiment, when a requested font cannot be located either locally orremotely, a replacement font most similar to the requested font may beselected automatically from existing (or registered) fonts. Similaritiesto a requested font may be compared according to a similarity measurebased on font attributes.

FIG. 1 is a block diagram illustrating one embodiment of a system toautomatically search and/or activate fonts. System 101 may be a part ofan operating system for a machine such as a digital device or a computersystem. In one embodiment, an application 107, e.g. a documentapplication, may send a request to a font API module 127 for a specificfont to display a document through a graphics engine 105 on a display103. A font may include font data, such as glyph data and/or fonttables, to graphically represent text in an electronic document. Fontdata may include font attributes, such as characteristics data and/orfont identifiers. Font attributes may include font metadata based onunified scale, such as how bold, how cursive, or how italic a font iscompared with other fonts or other attributes of font. In oneembodiment, font data and font metadata may be stored in separate files.

A font API module 127 may retrieve a pointer to font data associatedwith a font via a font subsystem 109. A font subsystem may reside insidea graphics layer of an operating system. In one embodiment, font datafor a font may be available from a font store 121 after the font hasbeen registered in a system, such as system 101. A font store 121 mayinclude a font database such as, for example, Apple's Spotlightdatabase. A font subsystem 109 may query a font store 121 for an entrycorresponding to a requested font. An entry for a font in a font store121 may be associated with corresponding font attributes, such asmetadata for the font. If an entry for a font does not include a pointerto font data, the font is not registered with a corresponding system. Afont not registered may still be associated with corresponding fontmetadata in a font store 121.

In one embodiment, a font subsystem 109 may search for a font via asearch engine 117 if the font is found not registered. A font searchengine 117 may crawl through local storages 123, such as locally coupledhard disks, CDs, and/or storage plug-ins. In addition, a font searchengine 117 may search remote storages or devices coupled over a network125, such as Internet. In one embodiment, a font search engine 117 maydetermine whether a file opened during a font search is a font fileaccording to a font identification module 115. A font identificationmodule 115 may identify font data and/or font attributes in a file bymatching file contents with font identifiers (names) and/orpredetermined font storage formats. When a requested font is located, afont subsystem 109 may register the located font through a fontregistration module 119. In one embodiment, a font registration module119 may update a font store 121 including, for example, allocatingrequired storage space, storing located font data and updating a fontdatabase in the font store 121. In one embodiment, a font registrationmodule 119 may remove an already registered font to make space toregister a new font according to a priority, such as, for example, fontusage frequency. If no matched fonts are found by a font search engine117, a font subsystem 109 may determine a replacement font selected fromregistered fonts through a font selection module 111. In one embodiment,a font selection module may measure a similarity between a requestedfont and a registered font based on font attributes, such as fontmetadata, retrieved from a font store 121. A replacement font may beselected from a set of registered fonts according to associatedsimilarity measurements.

FIG. 2 is a flow diagram illustrating one embodiment of a process toautomatically search and/or activate fonts. For example, process 200 maybe performed by system 100 of FIG. 1. In one embodiment, at block 201,the processing logic of process 200 may look up a font entry in a fontstore, such as font store 121 of FIG. 1, for a font specified in anelectronic document, such as a file just downloaded. A font entry may bea table in a font database. In another embodiment, the processing logicof process 200 may perform a font look up at block 201 in response to afont request received from a graphics system to display character datafor an electronic document. The processing logic of process 200 maydetermine if the specified font has an entry from a font database atblock 203. If no such entry is found, in one embodiment, the processinglogic of process 200 may proceed to search for the font at block 207. Ifa font entry is found, the processing logic of process 200 may determineif a corresponding font data is available (i.e. registered) at block205. If no such font data is available, at block 207, the processinglogic of process 200 may search local storages and/or remote systems forthe corresponding font data.

In an aspect, the processing logic of process 200 may perform a searchwith a limitation associated with an electronic document and/or aspecified font at block 201. For example, the processing logic ofprocess 200 may determine not to perform a font search or to performonly a limited font search according to a setting associated with theowner of an electronic document. In another aspect, the processing logicof process 200 may determine whether or not to perform a font searchbased on a usage history, such as, for example, a feature to prompt auser to purchase an automatically activated font before proceeding tolocate the font.

If font data is located during a search, at block 217, the processinglogic of process 200 may register the font data into a font store, suchas font store 121 of FIG. 1. In one embodiment, a font may be registeredby storing associated font data in a font store with a correspondingfont entry. If no corresponding font data is located at block 207, theprocessing logic of process 200 may select a replacement font for thespecified font at block 211. In one embodiment, the processing logic ofprocess 200 may compare a specified font with multiple registered fontsto select one registered font as a replacement font most similar to thespecified font. The processing logic of process 200 may conclude byretrieving a registered font data for the specified font at block 215.

FIG. 3 is a flow diagram illustrating one embodiment of a process tosearch for a font. For example, process 300 may be performed accordingto process 200 at block 207 of FIG. 2. In one embodiment, the processinglogic of process 300 may determine a scope of font search at block 301.A search scope may specify a limitation how a search for a font shouldbe conducted. In one embodiment, a search scope may prohibit a fontsearch to be performed. In another embodiment, a search scope may limita search to only local storages such as local and/or remotely mountedfiles systems. A search scope may include one or more remote locationswhere search for a particular font is allowed. In one embodiment, asearch scope may be determined based on an associated electronicdocument, a particular font specified or user and/or system settings.For example, a user may purchase a right to use a certain font for acertain period of time (e.g. usage history). The processing logic ofprocess 300 may determine a specified font at block 301 is allowedaccording to system privilege settings to search a maximum possiblescope for the specified font. A search scope may be associated with alimitation as a black list including remote locations not allowed for afont search.

At block 303, in one embodiment, the processing logic of process 300 mayretrieve font attributes corresponding to the specified font from a fontstore, such as a font database in a font store 121 of FIG. 1. In anotherembodiment, font attributes may be available directly from an electronicdocument associated with a specified font. At block 305, the processinglogic may search local storages for a specified font. A local storagesearch may include files systems specified according to a search scopedetermined at block 301. In one embodiment, the processing logic ofprocess 300 may open a file in a file system to determine whether a fileincludes a specified font according to file formats, characteristics ofthe content inside a file, and/or matching font names, according to fontattributes retrieved at block 303. Font files may be identified based onpredetermined font file formats, such as, for example, font format forTrueType Font.

At block 307, according to one embodiment, if a specified font is notfound from local storages, the processing logic of process 300 may crawlmultiple remote systems to search for the font according to a determinedscope. The processing logic of process 300 may send a request for aspecified font to a remote system. Based on a response received from aremote system, in one embodiment, the processing logic of process 300may subsequently send additional requests for the specified font toother remote systems. The processing logic of process 300 may determinewhether a remote destination system is within a search scope prior tosending a font search request. In one embodiment, the processing logicof process 300 may send a request for a specified font based on aprotocol including font attributes, such as, for example, font names.The processing logic of process 300 may receive a response includingcomplete font data in response to a font search request. In oneembodiment, the processing logic of process 300 may receive only partialfont data, such as font metadata for a font search request. If aspecified font is found with complete font data, the processing logic ofprocess 300 continues at block 311, otherwise at block 309.

FIG. 4 is a flow diagram illustrating one embodiment of a process todetermine a replacement for a font. For example, process 400 may beperformed according to process 200 at block 211 of FIG. 2. In oneembodiment, process 400 may be performed when a specified font cannot belocated either locally or remotely. The processing logic of process 400may determine if there are font attributes available for the specifiedfont at block 401, for example, based on a font database in a fontstore, such as font store 121 of FIG. 1. In one embodiment, a font storemay include font attributes for a font, such as font metadata, butwithout the corresponding font data, such as font glyph data. If fontattributes associated with a specified font are not available, at block415, the processing logic of process 400 may select a default font toreplace the specified font. In one embodiment, a default font may bepredetermined according to a system setting. Otherwise, the processinglogic of process 400 may retrieve font attributes associated with aspecified font from a font store at block 403.

In one embodiment, at block 405, the processing logic of process 400 maydetermine if there is already a replacement font designated for thespecified font at block 401. A replacement font for a specified font mayhave been identified in a prior font search during auto activation ofthe specified font. In one embodiment, designation of a replacement fontmay be revoked if changes are made to registered fonts, such as, forexample, installing a new font or removing an existing font, etc. If anexisting replacement font for a specified font is available, theexisting replacement font may be identified to replace the specifiedfont at block 413.

Otherwise, in one embodiment, the processing logic of process 400 maydetermine a similarity measure between a specified font and a registeredfont to select a replacement font at block 407. Similarity betweenseparate fonts may be measured based on associated font attributes, suchas font attributes retrieved at block 403, including, for example, fontmetadata. The processing logic of process 400 may measure similaritiesbetween a specified font and multiple registered fonts. At block 409,the processing logic of process 400 may select a registered font mostsimilar to a specified font. In another embodiment, similarity to aspecified font may be measured against fonts associated with fontattributes stored in a system, regardless whether the corresponding fontdata are registered or not. The processing logic of process 400 maycompare similarity measures and select a font associated with, forexample, the maximum similarity value among measured similarities. Inone embodiment, if a selected font, most similar to a specified font, isnot registered, the selected font may be automatically activated basedon a font search. At block 411, the processing logic of process 400 maydesignate a selected registered font as a replacement font for thespecified font. In one embodiment, the processing logic of process 400may update a font store, such as font store 121 of FIG. 1, to indicate aregistered font selected as a replacement for a specified font. Theselected registered font may be identified as a replacement font atblock 413. In one embodiment, a request for a specified font may besubstituted by a separate request for a replacement font designated forthe specified font.

FIG. 5 shows one example of a data processing system such as a computersystem, which may be used with one embodiment the present invention. Forexample, the system 500 may be implemented as a part of the system shownin FIGS. 1. Note that while FIG. 5 illustrates various components of acomputer system, it is not intended to represent any particulararchitecture or manner of interconnecting the components as such detailsare not germane to the present invention. It will also be appreciatedthat network computers and other data processing systems which havefewer components or perhaps more components may also be used with thepresent invention.

As shown in FIG. 5, the computer system 501, which is a form of a dataprocessing system, includes a bus 503 which is coupled to amicroprocessor(s) 505 and a ROM (Read Only Memory) 507 and volatile RAM509 and a non-volatile memory 511. The microprocessor 503 may retrievethe instructions from the memories 507, 509, 511 and execute theinstructions to perform operations described above. The bus 503interconnects these various components together and also interconnectsthese components 505, 507, 509, and 511 to a display controller anddisplay device 513 and to peripheral devices such as input/output (I/O)devices which may be mice, keyboards, modems, network interfaces,printers and other devices which are well known in the art. Typically,the input/output devices 515 are coupled to the system throughinput/output controllers 517. The volatile RAM (Random Access Memory)509 is typically implemented as dynamic RAM (DRAM) which requires powercontinually in order to refresh or maintain the data in the memory.

The mass storage 511 is typically a magnetic hard drive or a magneticoptical drive or an optical drive or a DVD RAM or a flash memory orother types of memory systems which maintain data (e.g. large amounts ofdata) even after power is removed from the system. Typically, the massstorage 511 will also be a random access memory although this is notrequired. While FIG. 5 shows that the mass storage 511 is a local devicecoupled directly to the rest of the components in the data processingsystem, it will be appreciated that the present invention may utilize anon-volatile memory which is remote from the system, such as a networkstorage device which is coupled to the data processing system through anetwork interface such as a modem or Ethernet interface or wirelessnetworking interface. The bus 503 may include one or more busesconnected to each other through various bridges, controllers and/oradapters as is well known in the art.

Portions of what was described above may be implemented with logiccircuitry such as a dedicated logic circuit or with a microcontroller orother form of processing core that executes program code instructions.Thus processes taught by the discussion above may be performed withprogram code such as machine-executable instructions that cause amachine that executes these instructions to perform certain functions.In this context, a “machine” may be a machine that converts intermediateform (or “abstract”) instructions into processor specific instructions(e.g., an abstract execution environment such as a “virtual machine”(e.g., a Java Virtual Machine), an interpreter, a Common LanguageRuntime, a high-level language virtual machine, etc.), and/or,electronic circuitry disposed on a semiconductor chip (e.g., “logiccircuitry” implemented with transistors) designed to executeinstructions such as a general-purpose processor and/or aspecial-purpose processor. Processes taught by the discussion above mayalso be performed by (in the alternative to a machine or in combinationwith a machine) electronic circuitry designed to perform the processes(or a portion thereof) without the execution of program code.

An article of manufacture may be used to store program code. An articleof manufacture that stores program code may be embodied as, but is notlimited to, one or more memories (e.g., one or more flash memories,random access memories (static, dynamic or other)), optical disks,CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or othertype of machine-readable media suitable for storing electronicinstructions. Program code may also be downloaded from a remote computer(e.g., a server) to a requesting computer (e.g., a client) by way ofdata signals embodied in a propagation medium (e.g., via a communicationlink (e.g., a network connection)).

The preceding detailed descriptions are presented in terms of algorithmsand symbolic representations of operations on data bits within acomputer memory. These algorithmic descriptions and representations arethe tools used by those skilled in the data processing arts to mosteffectively convey the substance of their work to others skilled in theart. An algorithm is here, and generally, conceived to be aself-consistent sequence of operations leading to a desired result. Theoperations are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like.

It should be kept in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the above discussion, itis appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or the like, refer to the action andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

The present invention also relates to an apparatus for performing theoperations described herein. This apparatus may be specially constructedfor the required purpose, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but is not limited to, any type ofdisk including floppy disks, optical disks, CD-ROMs, andmagnetic-optical disks, read-only memories (ROMs), RAMs, EPROMs,EEPROMs, magnetic or optical cards, or any type of media suitable forstoring electronic instructions, and each coupled to a computer systembus.

The processes and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general-purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct a more specializedapparatus to perform the operations described. The required structurefor a variety of these systems will be evident from the descriptionbelow. In addition, the present invention is not described withreference to any particular programming language. It will be appreciatedthat a variety of programming languages may be used to implement theteachings of the invention as described herein.

The foregoing discussion merely describes some exemplary embodiments ofthe present invention. One skilled in the art will readily recognizefrom such discussion, the accompanying drawings and the claims thatvarious modifications can be made without departing from the spirit andscope of the invention

1. A computer-implemented method, the method comprising: searching, inresponse to a request for a font, for font data of the font associatedwith a document in a system; and registering the font data into thesystem if the search is successful in order to allow retrieval of theregistered font data from the system for displaying the document.
 2. Acomputer-implemented method, the method comprising: determining, inresponse to a request for a font associated with a document, whether thefont is available in a system; if the font is not available in thesystem, determining a search scope for the font, the search scopeincluding zero or more storage locations; searching for font data of thefont limited by the search scope; and registering the font data into thesystem if the font data is located within the search scope in order toallow retrieval of the registered font data from the system fordisplaying the document.
 3. The method of claim 2, wherein registeringthe font data comprises: storing the font data in a local storage of thesystem; and updating the font entry with location information of thefont data in the local storage.
 4. The method of claim 2, wherein thesearching comprises: determining if the font data is already registeredin the system; and searching a local storage in the system for the fontdata if the font data is determined not yet registered.
 5. The method ofclaim 2, further comprising: detecting if a usage condition issatisfied; and sending an alert message if the usage condition is notsatisfied, wherein the search depends on when the usage condition issatisfied.
 6. The method of claim 3, further comprising: setting up anetwork connection to a remote system over a network; and sending asearch request to the remote system for the font data according to asearch protocol over the network connection.
 7. The method of claim 6,wherein sending the search request comprises: setting up a separatenetwork connection to a separate remote system according to a responseto the search request.
 8. The method of claim 6, wherein the searchprotocol includes font attributes associated with the font and whereinthe font attributes are stored in the system according to a font entryassociated with the font.
 9. The method of claim 8, wherein the searchscope includes a black list specifying locations where the search is notallowed.
 10. The method of claim 2, further comprising retrieving theregistered font data, wherein retrieving the registered font datacomprises: determining a similarity measure between the font and aseparate font; and selecting the separate font from among a plurality offonts in the system as most similar to the font based on the similaritymeasure.
 11. The method of claim 10, wherein the similarity measure isdetermined according to font attributes associated with the font, thefont attribute being stored in the system separate from the font data.12. The method of claim 10, wherein the plurality of fonts have beenregistered in the system and wherein the separate font is associatedwith the registered font data.
 13. The method of claim 10, wherein theregistered font data is associated with the separate font and whereinthe separate font is not registered in the system, further comprising:searching for the registered font data according to the search scope.14. A machine-readable medium having instructions stored therein, whichwhen executed by a machine, cause a machine to perform a method, themethod comprising: determining, in response to a request for a fontassociated with a document, whether the font is available in a system;if the font is not available in the system, determining a search scopefor the font, the search scope including zero or more storage locations;searching for font data of the font limited by the search scope; andregistering the font data into the system if the font data is locatedwithin the search scope in order to allow retrieval of the registeredfont data from the system for displaying the document.
 15. Themachine-readable medium of claim 14, wherein registering the font datacomprises: storing the font data in a local storage of the system; andupdating the font entry with location information of the font data inthe local storage.
 16. The machine-readable medium of claim 14, whereinthe searching comprises: determining if the font data is alreadyregistered in the system; and searching a local storage in the systemfor the font data if the font data is determined not yet registered. 17.The machine-readable medium of claim 14, further comprising: detectingif a usage condition is satisfied; and sending an alert message if theusage condition is not satisfied, wherein the search depends on when theusage condition is satisfied.
 18. The machine-readable medium of claim15, further comprising: setting up a network connection to a remotesystem over a network; and sending a search request to the remote systemfor the font data according to a search protocol over the networkconnection.
 19. The machine-readable medium of claim 18, wherein sendingthe search request comprises: setting up a separate network connectionto a separate remote system according to a response to the searchrequest.
 20. The machine-readable medium of claim 19, wherein the searchprotocol includes font attributes associated with the font and whereinthe font attributes are stored in the system according to a font entryassociated with the font.
 21. The machine-readable medium of claim 20,wherein the search scope includes a black list specifying locationswhere the search is not allowed.
 22. The machine-readable medium ofclaim 14, further comprising retrieving the registered font data,wherein retrieving the registered font data comprises: determining asimilarity measure between the font and a separate font; and selectingthe separate font from among a plurality of fonts in the system as mostsimilar to the font based on the similarity measure.
 23. Themachine-readable medium of claim 22, wherein the similarity measure isdetermined according to font attributes associated with the font, thefont attribute being stored in the system separate from the font data.24. The machine-readable medium of claim 22, wherein the plurality offonts have been registered in the system and wherein the separate fontis associated with the registered font data.
 25. The machine-readablemedium of claim 22, wherein the registered font data is associated withthe separate font and wherein the separate font is not registered in thesystem, further comprising: searching for the registered font dataaccording to the search scope.
 26. A machine for a data-processingsystem comprising: means for determining, in response to a request for afont associated with a document, whether the font is available in asystem; if the font is not available in the system, means fordetermining a search scope for the font, the search scope including zeroor more storage locations; means for searching for font data of the fontlimited by the search scope; and means for registering the font datainto the system if the font data is located within the search scope inorder to allow retrieval of the registered font data from the system fordisplaying the document via a display device.